//
// Created by 28365 on 2025/3/5.
//

#ifndef ODUPDATERSDK_IUPDATERECORDER_H
#define ODUPDATERSDK_IUPDATERECORDER_H

class IUpdateRecorder;

#include "../include/obj/UpdateRecord.h"
#include "../include/ODUpdater.h"

class IUpdateRecorder {
public:
    /**
     * 获取以更新完成的内容
     * @param odUpdater 更新器对象
     * @return 记录对象，当记录文件不存在时<code>version == notCompletedVersion == 0</code>
     */
    virtual UpdateRecord getUpdatedVersion(const ODUpdater &odUpdater) = 0;

    /**
     * 指定当前记录的版本
     * @param odUpdater 更新器对象
     * @param version 版本号
     */
    virtual void useVersion(const ODUpdater *odUpdater, int version) = 0;

    /**
     * 给当前指定版本添加资源记录
     * @param resId 资源id
     */
    virtual void addRes(int64_t resId) = 0;

    /**
     * 完成当前版本的记录写入
     */
    virtual void complete() = 0;

    /**
     * 仅关闭流
     * <p>当出现异常无法完成记录时调用该方法终止当前更新记录</p>
     */
    virtual void closeStream() = 0;

    /**
     * 验证当前是否存在指定版本
     * @return 存在==true
     */
    virtual bool isUseVersion() = 0;

    virtual ~IUpdateRecorder() = default;
};


#endif //ODUPDATERSDK_IUPDATERECORDER_H
